#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N=100010;
int a[N];
int n,L;

bool cmp(int x,int y){
    return x>y;
}

int main(){
    cin>>n>>L;
    for(int i=1;i<=n;i++) cin>>a[i];

    sort(a+1,a+1+n,cmp);  //逆序

    int h=0;
    for(int i=1;i<=n;i++){
        if(a[i]>=i) h=i;  //找到我们的指数点
        else break;
    }
    if(a[h+1]<h){
        cout<<h<<endl;  //如果a[h+1]这个点小于h的话,则它就算加1也不会变成h+1,后面的数更不可能
        return 0;
    }
    int cnt=0;
    for(int i=1;i<=h+1;i++){
        if(a[i]==h) cnt++;   //计算出有多少个数是h
    }
    if(L>=cnt) cout<<h+1<<endl;   //满足条件则是h+1否则是h
    else cout<<h<<endl;
    return 0;

}